//***********************************************************************************
// 请注意写好注释
// 首页模块
// 圈子模块
// 发布模块
// 我的模块
// 公共模块
// 订单模块
//***********************************************************************************


//***********************************************************************************
// 首页模块
//***********************************************************************************
const index = {
    //***********************************************************************************
    // 融资保险模块
    //***********************************************************************************
    /**
     * 融资保险模块
     * @param  name   方法名
     */
    mergeInsure(name) {
        "use strict"
        var objMergeInsure = {
            getInsuranceList(params, callback) {
                var vm = this;
                fnGet(interfaces.PRODUCT_MODULE.MENUICON.RONGZIBAOXIAN.GET_INSURANCE, params, true,
                    function (ret, err) {
                        if (ret && ret.code === RESPONSE_OK) {
                            callback && callback(ret);

                        } else {
                            toastBottom(ret ? ret.msg : '');
                        }
                        api.refreshHeaderLoadDone();
                    }
                );
            },
            getInsuranceDetail(params, callback) {
                var vm = this;
                fnGet(interfaces.PRODUCT_MODULE.MENUICON.RONGZIBAOXIAN.GET_INSURANCE + "/" + params.id, {}, false,
                    function (ret, err) {
                        if (ret && ret.code === RESPONSE_OK) {
                            callback && callback(ret);
                            console.log(JSON.stringify(ret.data))
                        } else
                            toastBottom(ret ? ret.msg : '');
                    }
                );

            },
            /**
             * 调用对象所拥有的方法
             * @param {} name 方法名
             */
            invoke(name) {
                if (objMergeInsure[name])
                    return objMergeInsure[name];
                else
                    throw new Error("不存在名称为" + name + "方法")
            }
        }
        return objMergeInsure.invoke(name)
    },

    /**
     * 维修保养相关
     * @param {*} name
     */
    maintenance(name) {
        "use strict"
        var objectMaintenance = {
            invoke(name) {
                if (objectMaintenance[name])
                    return objectMaintenance[name];
                else
                    throw new Error("不存在名称为" + name + "方法")
            },

            /**
             * 获取维修保养列表
             * @param {*} params
             * @param {*} callback
             */
            getListMaintenance(params, callback) {
                fnGet(interfaces.PRODUCT_MODULE.MAINTENANCE.GET_MAINTENANCE, params, true, (ret, err) => {
                    if (ret && ret.code === RESPONSE_OK) {
                        callback(ret);
                    } else {
                        toastBottom(ret ? ret.msg : '');
                    }
                    api.refreshHeaderLoadDone();
                })
            },
            /**
             * 获取维修保养列表
             * @param {*} id 店铺id
             * @param {*} callback
             */
            getDetailMaintenance(id, callback) {
                fnGet(interfaces.PRODUCT_MODULE.MAINTENANCE.GET_DETAIL_MAINTENANCE + id, {}, true, (ret, err) => {
                    if (ret && ret.code === RESPONSE_OK) {
                        callback(ret);
                    } else {
                        toastBottom(ret ? ret.msg : '');
                    }
                })
            },
            /**
             * 获取我的维修保养
             * @param {*} callback
             */
            getMimeMaintenanceDetail(callback) {
                fnGet(interfaces.PRODUCT_MODULE.MAINTENANCE.MINE_MAINTENANCE_DETAIL, {}, true, (ret, err) => {
                    if (ret && ret.code === RESPONSE_OK) {
                        callback(ret);
                    } else {
                        toastBottom(ret ? ret.msg : '');
                    }
                })
            },
            /**
             * 更新
             * @param {'商品'} param
             * @param callback
             */
            updateMaintenance(param, callback) {
                if (!param.id) {
                    toastBottom("参数错误！")
                    return false
                }
                fnPut(interfaces.PRODUCT_MODULE.MAINTENANCE.UPDATE_MAINTENANCE, param, false, function (ret, err) {
                    if (ret && ret.code === RESPONSE_OK) {
                        callback(ret);
                    } else {
                        toastBottom(ret ? ret.msg : '');
                    }
                });
            },
            /**
             * 更新上下架
             * @param {'商品'} param
             * @param callback
             */
            updateStatusMaintenance(param, callback) {
                if (!param.id) {
                    toastBottom("参数错误！")
                    return false
                }
                fnPut(interfaces.PRODUCT_MODULE.MAINTENANCE.UPDATE_STATUS_MAINTENANCE, param, false, function (ret, err) {
                    if (ret && ret.code === RESPONSE_OK) {
                        callback(ret);
                    } else {
                        toastBottom(ret ? ret.msg : '');
                    }
                });
            },

        }
        return objectMaintenance.invoke(name)
    },
    /**
     * 用工招聘
     * @param {*} name
     */
    employ(name) {
        "use strict"
        var objEmployment = {
            /**
             * 获取用工招聘列表
             * @param params
             * @param callback
             */
            getEmployList(params, callback) {
                fnGet(interfaces.PRODUCT_MODULE.MENUICON.EMPLOYMENT.GET_EMPLOYMENT, params, true,
                    function (ret, err) {
                        if (ret && ret.code === RESPONSE_OK) {
                            callback && callback(ret);
                        } else {
                            toastBottom(ret ? ret.msg : '');
                        }
                        api.refreshHeaderLoadDone();
                    }
                );
            },
            getEmployDetail(employId, callback) {
                fnGet(interfaces.PRODUCT_MODULE.MENUICON.EMPLOYMENT.GET_EMPLOYMENT_DETAIL + employId, {}, false,
                    function (ret, err) {
                        if (ret && ret.code === RESPONSE_OK) {
                            callback && callback(ret);
                        } else {
                            toastBottom(ret ? ret.msg : '');
                        }
                    }
                );
            },
            /**
             * 更新商品
             * @param {'商品'} param
             * @param callback
             */
            updateEmployment(param, callback) {
                if (!param.id) {
                    toastBottom("参数错误！")
                    return false
                }
                fnPut(interfaces.PRODUCT_MODULE.MENUICON.EMPLOYMENT.UPDATE_EMPLOYMENT, param, false, function (ret, err) {
                    if (ret && ret.code === RESPONSE_OK) {
                        callback(ret);
                    } else {
                        toastBottom(ret ? ret.msg : '');
                    }
                });
            },
            /**
             * 更新上下架商品
             * @param {'商品'} param
             * @param callback
             */
            updateStatusEmployment(param, callback) {
                if (!param.id) {
                    toastBottom("参数错误！")
                    return false
                }
                fnPut(interfaces.PRODUCT_MODULE.MENUICON.EMPLOYMENT.UPDATE_STATUS_EMPLOYMENT, param, false, function (ret, err) {
                    if (ret && ret.code === RESPONSE_OK) {
                        callback(ret);
                    } else {
                        toastBottom(ret ? ret.msg : '');
                    }
                });
            },
            /**
             * 调用对象所拥有的方法
             * @param {} name 方法名
             */
            invoke(name) {
                if (objEmployment[name])
                    return objEmployment[name];
                else
                    throw new Error("不存在名称为" + name + "方法")
            }
        }
        return objEmployment.invoke(name)
    },
    /**
     * 仓储物流
     * @param {*} name
     * @author 德古拉伯
     */
    logistically(name) {
        "use strict"
        var objLogistics = {
            /**
             * 获取物流列表
             * @param params
             * @param callback
             */
            getLogisticsList(params, callback) {
                fnGet(interfaces.PRODUCT_MODULE.MENUICON.LOGISTICS.GET_LOGISTICSLIST, params, true,
                    function (ret, err) {
                        if (ret && ret.code === RESPONSE_OK) {
                            callback && callback(ret);
                        } else {
                            toastBottom(ret ? ret.msg : '');
                        }
                        api.refreshHeaderLoadDone();
                    }
                );
            },
            /**
             * 获取仓储列表
             * @param params
             * @param callback
             */
            getStorehouseList(params, callback) {
                fnGet(interfaces.PRODUCT_MODULE.MENUICON.LOGISTICS.GET_STOREHOUSELIST, params, true,
                    function (ret, err) {
                        if (ret && ret.code === RESPONSE_OK) {
                            callback && callback(ret);
                        } else {
                            toastBottom(ret ? ret.msg : '');
                        }
                        api.refreshHeaderLoadDone();
                    }
                );
            },
            getLogisticsDetail(params, callback) {
                fnGet(interfaces.PRODUCT_MODULE.MENUICON.LOGISTICS.GET_LOGISTICSLIST + "/" + params.id, {}, false,
                    function (ret, err) {
                        if (ret && ret.code === RESPONSE_OK) {
                            callback && callback(ret);
                        } else {
                            toastBottom(ret ? ret.msg : '');
                        }
                    }
                );
            },
            getStoreHouseDetail(params, callback) {
                fnGet(interfaces.PRODUCT_MODULE.MENUICON.LOGISTICS.GET_STOREHOUSELIST + "/" + params.id, {}, false,
                    function (ret, err) {
                        if (ret && ret.code === RESPONSE_OK) {
                            callback && callback(ret);
                        } else {
                            toastBottom(ret ? ret.msg : '');
                        }
                    }
                );
            },
            /**
             * 调用对象所拥有的方法
             * @param {} name 方法名
             */
            invoke(name) {
                if (objLogistics[name])
                    return objLogistics[name];
                else
                    throw new Error("不存在名称为" + name + "方法")
            }
        }
        return objLogistics.invoke(name);

    },
    equipment(name) {
        const objEquipment = {
            // 获取设备列表
            getListEquipments(params, callback) {
                fnGet(interfaces.PRODUCT_MODULE.EQUIPMENT.GET_EQUIPMENTS, params, true,
                    function (ret, err) {
                        // console.log(JSON.stringify(ret));
                        if (ret && ret.code === RESPONSE_OK) {
                            callback(ret);
                        } else {
                            toastBottom(ret ? ret.msg : '');
                        }
                        api.refreshHeaderLoadDone();
                    }
                );
            },
            // 获取设备详情
            getEquipmentDetail(equipmentId, callback) {
                fnGet(interfaces.PRODUCT_MODULE.EQUIPMENT.GET_EQUIPMENT_DETAIL + equipmentId, {}, false, function (ret, err) {
                    if (ret && ret.code === RESPONSE_OK) {
                        callback(ret);
                    } else {
                        toastBottom(ret ? ret.msg : '');
                    }
                });
            },
            /**
             * 更新商品
             * @param {'商品'} param
             * @param callback
             */
            updateEquipment(param, callback) {
                if (!param.id) {
                    toastBottom("参数错误！")
                    return false
                }
                fnPut(interfaces.PRODUCT_MODULE.EQUIPMENT.UPDATE_EQUIPMENT, param, false, function (ret, err) {
                    if (ret && ret.code === RESPONSE_OK) {
                        callback(ret);
                    } else {
                        toastBottom(ret ? ret.msg : '');
                    }
                });
            },
            /**
             * 更新上下架商品
             * @param {'商品'} param
             * @param callback
             */
            updateStatusEquipment(param, callback) {
                if (!param.id) {
                    toastBottom("参数错误！")
                    return false
                }
                fnPut(interfaces.PRODUCT_MODULE.EQUIPMENT.UPDATE_STATUS_EQUIPMENT, param, false, function (ret, err) {
                    if (ret && ret.code === RESPONSE_OK) {
                        callback(ret);
                    } else {
                        toastBottom(ret ? ret.msg : '');
                    }
                });
            },
            invoke(name) {
                if (objEquipment[name]) return objEquipment[name];
                else throw new Error("不存在名称为" + name + "方法")
            }
        };
        return objEquipment.invoke(name)
    },
    // 商品
    product(name) {
        const objProduct = {
            // 获取视频展示列表 获取商品列表 0设备售卖 1设备出租 2配件
            getListProducts(params, callback) {
                fnGet(interfaces.PRODUCT_MODULE.PRODUCT.GET_PRODUCTS, params, false,
                    function (ret, err) {
                        if (ret && ret.code === RESPONSE_OK) {
                            callback(ret);
                        }
                        api.refreshHeaderLoadDone();
                    }
                );
            },
            /**
             * 获取商品详情
             * @param {'商品ID'} productId
             * @param callback
             */
            getProductDetail(productId, callback) {
                fnGet(interfaces.PRODUCT_MODULE.PRODUCT.GET_PRODUCT_DETAIL + productId, {}, false, function (ret, err) {
                    if (ret && ret.code === RESPONSE_OK) {
                        callback(ret);
                    }
                });
            },
            /**
             * 更新商品
             * @param {'商品'} param
             * @param callback
             */
            updateProduct(param, callback) {
                if (!param.id) {
                    toastBottom("参数错误！")
                    return false
                }
                fnPut(interfaces.PRODUCT_MODULE.PRODUCT.UPDATE_PRODUCT, param, false, function (ret, err) {
                    if (ret && ret.code === RESPONSE_OK) {
                        callback(ret);
                    } else {
                        toastBottom(ret ? ret.msg : '');
                    }
                });
            },
            /**
             * 更新上下架商品
             * @param {'商品'} param
             * @param callback
             */
            updateStatusProduct(param, callback) {
                if (!param.id) {
                    toastBottom("参数错误！")
                    return false
                }
                fnPut(interfaces.PRODUCT_MODULE.PRODUCT.UPDATE_STATUS_PRODUCT, param, false, function (ret, err) {
                    if (ret && ret.code === RESPONSE_OK) {
                        callback(ret);
                    } else {
                        toastBottom(ret ? ret.msg : '');
                    }
                });
            },
            /**
             * 增加询价数量
             * @param productId 商品id
             * @param callback
             */
            addInquiry(productId, callback) {
                fnGet(interfaces.PRODUCT_MODULE.PRODUCT.GET_PRODUCT_DETAIL + productId + '/inquiry', {}, false, function (ret, err) {
                    if (ret && ret.code === RESPONSE_OK) {
                        callback(ret);
                    }
                });
            },
            invoke(name) {
                if (objProduct[name]) return objProduct[name];
                else throw new Error("不存在名称为" + name + "方法")
            }
        };
        return objProduct.invoke(name)
    },
    //异型钢模块
    deformedSteel(name) {
        const objdeformedSteel = {
            // 获取分类列表
            getDeformedCategoryList(params, callback) {
                fnGet(interfaces.PRODUCT_MODULE.DEFORMED.GET_DEFORMED_CATEGORY, params, true,
                    function (ret, err) {
                        // console.log(JSON.stringify(ret));
                        if (ret && ret.code === RESPONSE_OK) {
                            callback(ret);
                        } else {
                            toastBottom(ret ? ret.msg : '');
                        }
                        api.refreshHeaderLoadDone();
                    }
                );
            },
            // 获取异型钢列表
            getListDeformed(params, callback) {
                fnGet(interfaces.PRODUCT_MODULE.DEFORMED.GET_DEFORMED_LIST, params, true,
                    function (ret, err) {
                        // console.log(JSON.stringify(ret));
                        if (ret && ret.code === RESPONSE_OK) {
                            callback(ret);
                        } else {
                            toastBottom(ret ? ret.msg : '');
                        }
                        api.refreshHeaderLoadDone();
                    }
                );
            },
            // 获取异型钢详情
            getDeformedDetail(id, callback) {
                fnGet(interfaces.PRODUCT_MODULE.DEFORMED.GET_DEFORMED_DETAIL + id, {}, false, function (ret, err) {
                    if (ret && ret.code === RESPONSE_OK) {
                        callback(ret);
                    } else {
                        toastBottom(ret ? ret.msg : '');
                    }
                });
            },
            /**
             * 更新异型钢
             * @param {'商品'} param
             * @param callback
             */
            updateDeformed(param, callback) {
                if (!param.id) {
                    toastBottom("参数错误！")
                    return false
                }
                fnPut(interfaces.PRODUCT_MODULE.DEFORMED.UPDATE_DEFORMEDT, param, false, function (ret, err) {
                    if (ret && ret.code === RESPONSE_OK) {
                        callback(ret);
                    } else {
                        toastBottom(ret ? ret.msg : '');
                    }
                });
            },
            /**
             * 更新上下架商品
             * @param {'商品'} param
             * @param callback
             */
            updateStatusDeformed(param, callback) {
                if (!param.id) {
                    toastBottom("参数错误！")
                    return false
                }
                fnPut(interfaces.PRODUCT_MODULE.DEFORMED.UPDATE_STATUS_DEFORMED, param, false, function (ret, err) {
                    if (ret && ret.code === RESPONSE_OK) {
                        callback(ret);
                    } else {
                        toastBottom(ret ? ret.msg : '');
                    }
                });
            },
            invoke(name) {
                if (objdeformedSteel[name]) return objdeformedSteel[name];
                else throw new Error("不存在名称为" + name + "方法")
            }
        };
        return objdeformedSteel.invoke(name)
    },


    //资讯模块
    news(name) {
        const objNewsSteel = {
            // 获取分类列表
            getNewsCategoryList(params, callback) {
                fnGet(interfaces.PRODUCT_MODULE.NEWS.GET_NEWS_CHANNLE, params, true,
                    function (ret, err) {
                        // console.log(JSON.stringify(ret));
                        if (ret && ret.code === RESPONSE_OK) {
                            callback(ret);
                        } else {
                            toastBottom(ret ? ret.msg : '');
                        }
                        api.refreshHeaderLoadDone();
                    }
                );
            },
            // 获取资讯列表
            getListNews(params, callback) {
                fnGet(interfaces.PRODUCT_MODULE.NEWS.GET_NEWS_LIST, params, true,
                    function (ret, err) {
                        // console.log(JSON.stringify(ret));
                        if (ret && ret.code === RESPONSE_OK) {
                            callback(ret);
                        } else {
                            toastBottom(ret ? ret.msg : '');
                        }
                        api.refreshHeaderLoadDone();
                    }
                );
            },
            // 获取资讯详情
            getNewsDetail(params, callback) {
                fnGet(interfaces.PRODUCT_MODULE.NEWS.GET_NEWS_DETAIL, params, false, function (ret, err) {
                    if (ret && ret.code === RESPONSE_OK) {
                        callback(ret);
                    } else {
                        toastBottom(ret ? ret.msg : '');
                    }
                });
            },
            // 添加浏览记录
            addNewsLook(params, callback) {
                fnGet(interfaces.PRODUCT_MODULE.NEWS.ADD_NEWS_LOOK, params, false, function (ret, err) {
                    if (ret && ret.code === RESPONSE_OK) {
                        callback(ret);
                    } else {
                        toastBottom(ret ? ret.msg : '');
                    }
                });
            },
            invoke(name) {
                if (objNewsSteel[name]) return objNewsSteel[name];
                else throw new Error("不存在名称为" + name + "方法")
            }
        };
        return objNewsSteel.invoke(name)
    },


    /**
     * 视频点播
     * @param name
     * @returns {undefined|*}
     */
    video(name) {
        const objVideo = {
            // 获取视频展示列表
            getListVideoShow(params, callback) {
                fnGet(interfaces.PRODUCT_MODULE.INDEX.VIDEO_SHOWS, params, false,
                    function (ret, err) {
                        if (ret && ret.code === RESPONSE_OK) {
                            callback(ret);
                            api.refreshHeaderLoadDone()
                        } else {
                            toastBottom(ret ? ret.msg : '');
                        }
                    }
                );
            },
            /**
             * 获取视频详情
             * @param {'视频ID，非阿里视频id'} videoId
             * @param callback
             */
            getVideoShowDetail(videoId, callback) {
                fnGet(interfaces.PRODUCT_MODULE.INDEX.VIDEO_SHOWS_DETAIL + videoId, {}, false, function (ret, err) {
                    if (ret && ret.code === RESPONSE_OK) {
                        callback(ret);
                    } else {
                        toastBottom(ret ? ret.msg : '');
                    }
                });
            },
            invoke(name) {
                if (objVideo[name]) return objVideo[name];
                else throw new Error("不存在名称为" + name + "方法")
            }
        };
        return objVideo.invoke(name)
    },
    /**
     * 地区相关
     */
    area(name) {
        "use strict"
        const ObjArea = {
            /**
             * 调用对象所拥有的方法
             * @param {} name 方法名
             */
            invoke(name) {
                if (ObjArea[name])
                    return ObjArea[name];
                else
                    throw new Error("不存在名称为" + name + "方法")
            },
            /**
             *
             * @param { 关键字 } keyword
             * @param {*} loading
             * @param {*} callback
             */
            getListArea(keyword, loading, callback) {
                fnGet(interfaces.CONTENT_MODULE.AREA.GET_CITYLIST, {
                    keyword: keyword
                }, loading,
                    function (ret, err) {
                        if (ret && ret.code === RESPONSE_OK) {
                            callback(ret)
                        } else {
                            toastBottom(ret ? ret.msg : '');
                        }
                    }
                );
            },
            getProvinceByCityCode(cityCode, callback) {
                fnGet(interfaces.CONTENT_MODULE.AREA.GET_PROVINCE, {
                    cityCode: cityCode
                }, false,
                    function (ret, err) {
                        if (ret && ret.code === RESPONSE_OK) {
                            callback(ret)
                        }
                    }
                );
            }
        }
        return ObjArea.invoke(name)
    }
};


//***********************************************************************************
// 圈子模块
//***********************************************************************************
function circle(name) {
    "use strict"
    var circleObj = {
        /**
         * 点赞和取消点赞
         * @param item
         */
        doThumb(item, callback) {
            if (!checkToken()) return false;
            if (!item.likeFlag) {
                fnPut(interfaces.CONTENT_MODULE.CIRCLE.LIKES_NEWS + "/" + item.topicId, {},
                    false,
                    function (ret, err) {
                        if (ret && ret.code === RESPONSE_OK) {
                            callback && callback(ret);
                        } else
                            toastBottom(ret ? ret.msg : '');
                    }
                )
            } else {
                fnPut(interfaces.CONTENT_MODULE.CIRCLE.UNLIKES_NEWS + "/" + item.topicId, {},
                    false,
                    function (ret, err) {
                        if (ret && ret.code === RESPONSE_OK) {
                            toastMiddle('取消点赞')
                            callback && callback(ret);
                        } else
                            toastBottom(ret ? ret.msg : '');
                    }
                )

            }
        },

        /**
         * 点赞评论和取消点赞评论
         * @param item
         */
        doComentThumb(item, callback) {
            if (!checkToken()) return false;
            if (!item.thumbsFlg) {
                fnPut(interfaces.CONTENT_MODULE.CIRCLE.LIKES_COMMENT + "/" + item.topicCommonId, {},
                    false,
                    function (ret, err) {
                        if (ret && ret.code === RESPONSE_OK) {
                            callback && callback(ret);
                        } else
                            toastBottom(ret ? ret.msg : '');
                    }
                )
            } else {
                fnPut(interfaces.CONTENT_MODULE.CIRCLE.UNLIKES_COMMENT + "/" + item.topicCommonId, {},
                    false,
                    function (ret, err) {
                        if (ret && ret.code === RESPONSE_OK) {
                            toastMiddle('取消点赞')
                            callback && callback(ret);
                        } else
                            toastBottom(ret ? ret.msg : '');
                    }
                )

            }
        },
        /**
         *
         * @param {*} item 被评论的对象
         * @param {*} callback 回调
         */
        doFollow(item, callback) {
            if (!checkToken()) return false;
            if (item.attentionFlag) {
                api.confirm({
                    title: '确定不再关注？',
                    buttons: ['确定', '取消']

                }, function (ret, err) {
                    if (ret.buttonIndex == 1) {
                        fnPut(interfaces.CONTENT_MODULE.CIRCLE.UNCONCERN_USER + "/" + item.userId, {},
                            false,
                            function (ret, err) {
                                if (ret && ret.code === RESPONSE_OK) {

                                    toastMiddle('取消关注')
                                    callback && callback(ret);

                                } else
                                    toastBottom(ret ? ret.msg : '');
                            }
                        )
                    }
                });
            } else {
                fnPut(interfaces.CONTENT_MODULE.CIRCLE.CONCERN_USER + "/" + item.userId, {},
                    false,
                    function (ret, err) {
                        if (ret && ret.code === RESPONSE_OK) {
                            toastMiddle('关注成功，可在“我的关注中查看”')
                            callback && callback();
                        } else
                            toastBottom(ret ? ret.msg : '');
                    }
                )
            }
        },
        /**
         * 获取全部圈子
         * @param {pageNum,pageSize} queryInfo
         * @param {*} callback
         */
        initAllNews(queryInfo, callback) {
            fnGet(interfaces.CONTENT_MODULE.CIRCLE.GET_ALL_NEWSFEED,
                queryInfo, false,
                function (ret, err) {
                    if (ret && ret.code === RESPONSE_OK) {
                        callback(ret)
                    } else
                        toastBottom(ret ? ret.msg : '');
                }
            );
        },
        /**
         * 获取我的圈子
         * @param {pageNum,pageSize} queryInfo
         * @param {*} callback
         */
        initMyNews(queryInfo, callback) {
            var that = this;
            fnGet(interfaces.CONTENT_MODULE.CIRCLE.GET_MYCONCERN,
                queryInfo, false,
                function (ret, err) {
                    if (ret && ret.code === RESPONSE_OK)
                        callback(ret)
                    else
                        toastBottom(ret ? ret.msg : '');
                }
            );
        },
        /**
         * 删除一条动态
         * @param {话题ID} topicId
         * @param callback 回调
         */
        deleteMoment(topicId, callback) {
            fnDelete(interfaces.CONTENT_MODULE.CIRCLE.DELETE_MOMENTS + topicId, {}, false, function (ret, err) {
                if (ret && ret.code === RESPONSE_OK) {
                    callback(ret, err);
                } else {
                    toastBottom(ret ? ret.msg : '');
                }
            })
        },
        /**
         * 获取我的所有动态
         */
        listAllMimeMoments(params, callback) {
            fnGet(interfaces.CONTENT_MODULE.CIRCLE.LIST_ALL_MIME_MOMENTS, params, false,
                function (ret, err) {
                    if (ret && ret.code === RESPONSE_OK) {
                        callback(ret, err)
                    } else
                        toastBottom(ret ? ret.msg : '');
                }
            );
        },

        /**
         * 获取我关注的视频列表
        **/
        listAllFocusMoments(params, callback) {
            fnGet(interfaces.CONTENT_MODULE.CIRCLE.LIST_ALL_MIME_FOCUS, params, false,
                function (ret, err) {
                    if (ret && ret.code === RESPONSE_OK) {
                        callback(ret, err)
                    } else
                        toastBottom(ret ? ret.msg : '');
                }
            );
        },

        /**
        * 获取我点赞的视频列表
       **/
        listAllLikeMoments(params, callback) {
            fnGet(interfaces.CONTENT_MODULE.CIRCLE.LIST_ALL_MIME_LIKE, params, false,
                function (ret, err) {
                    if (ret && ret.code === RESPONSE_OK) {
                        callback(ret, err)
                    } else
                        toastBottom(ret ? ret.msg : '');
                }
            );
        },
        /**
        * 新增视频统计
       **/
        addVideoDuration(params, callback) {
            fnGet(interfaces.CONTENT_MODULE.CIRCLE.ADD_VIDEO_DUTATION, params, false,
                function (ret, err) {
                    if (ret && ret.code === RESPONSE_OK) {
                        callback(ret, err)
                    } else
                        toastBottom(ret ? ret.msg : '');
                }
            );
        },
        /**
         * 点赞和取消点赞
         * @param likeFlag 喜欢标志
         * @param topicId 话题ID
         * @param callback 回调
         */
        likeOrCancelLike(likeFlag, topicId, callback) {
            if (!likeFlag) {
                fnPut(interfaces.CONTENT_MODULE.CIRCLE.LIKES_NEWS + "/" + topicId, {}, false,
                    function (ret, err) {
                        if (ret && ret.code === RESPONSE_OK) {
                            toastMiddle('点赞成功')
                            callback(ret, err);
                        } else {
                            toastBottom(ret ? ret.msg : '');
                        }
                    }
                )
            } else {
                fnPut(interfaces.CONTENT_MODULE.CIRCLE.UNLIKES_NEWS + "/" + topicId, {}, false,
                    function (ret, err) {
                        if (ret && ret.code === RESPONSE_OK) {
                            toastMiddle('取消点赞')
                            callback(ret, err);
                        } else {
                            toastBottom(ret ? ret.msg : '');
                        }
                    }
                )
            }
        },
        /**
         * 调用对象所拥有的方法
         * @param {} name 方法名
         */
        invoke(name) {
            if (circleObj[name])
                return circleObj[name];
            else
                throw new Error("不存在名称为" + name + "方法")
        }
    }
    return circleObj.invoke(name)
}


//***********************************************************************************
// 发布模块
//***********************************************************************************
function release(name) {
    const objRelease = {
        invoke(name) {
            if (objRelease[name]) return objRelease[name];
            else throw new Error("不存在当前方法")
        },
        /**
         * 发布 所在地选择
         * @param { 关键字 } keyword
         * @param callback
         */
        getListReleaseArea(keyword, callback) {
            fnGet(interfaces.CONTENT_MODULE.AREA.GET_SEARCH_PLACE, {
                keyword: keyword
            }, true,
                function (ret, err) {
                    if (ret && ret.code === RESPONSE_OK) {
                        callback(ret)
                    } else
                        toastBottom(ret ? ret.msg : '');
                });
        },
        /**
         * 根据类型获取选项列表
         * @param {'类型：类型：0工种 1工作经验 2工作性质 3货物类型 4货找车/车找货运价单位类型 5薪资单位类型
         * 6仓储类型 7仓储价格单位类型 8商铺类型 9维修保养列表距离选项'} type
         * @param callback
         */
        getListOptions(type, callback) {
            fnGet(interfaces.PRODUCT_MODULE.LIST_OPTIONS, { type: type }, true, (ret, err) => {
                if (ret && ret.code === RESPONSE_OK) {
                    callback(ret);
                } else {
                    toastBottom(ret ? ret.msg : '');
                }
            })
        },
        /**
         * 根据类型获取标签列表
         * @param {'类型：0招聘 1求职 2车找货 3货找车 4设备出售 5设备求购 6设备出租 7设备求租 8配件标签 9仓储标签'} type
         * @param callback
         */
        getListTags(type, callback) {
            fnGet(interfaces.PRODUCT_MODULE.LIST_TAGS, { type: type }, true, (ret, err) => {
                if (ret && ret.code === RESPONSE_OK) {
                    callback(ret);
                } else {
                    toastBottom(ret ? ret.msg : '');
                }
            })
        },


        getListEnablePromotions(callback) {
            fnGet(interfaces.PRODUCT_MODULE.GET_LIST_PROMOTIONS, {}, false, (ret, err) => {
                if (ret && ret.code === RESPONSE_OK) {
                    callback(ret);
                } else {
                    toastBottom(ret ? ret.msg : '');
                }
            })
        },

        getListProductEnablePromotions(callback) {
            var url = interfaces.PRODUCT_MODULE.GET_LIST_PRODUCT_PROMOTIONS
            fnGet(url, {}, false, (ret, err) => {
                if (ret && ret.code === RESPONSE_OK) {
                    callback(ret);
                } else {
                    toastBottom(ret ? ret.msg : '');
                }
            })
        },
        /**
         *
         * @param {"等级：0品类 1类型 2型号"} level
         * @param {"上级id，不传表示查一级的品类"} parentId
         * @param {"0整机买卖 1租赁出租 2配件"} type
         * @param callback
         */
        getCategories(level, parentId, type, callback) {
            let param = {}
            if (parentId) {
                param = { level: level, parentId: parentId, type: type, status: 1, pageNum: 1, pageSize: 999 }
            } else {
                param = { level: level, type: type, status: 1, pageNum: 1, pageSize: 999 }
            }
            fnGet(interfaces.PRODUCT_MODULE.LIST_CATEGORIES, param, false, function (ret, err) {
                if (ret && ret.code === RESPONSE_OK) {
                    callback(ret);
                } else {
                    toastBottom(ret ? ret.msg : '');
                }
            });
        },
        publishProduct(param, callback) {
            fnPost(interfaces.PRODUCT_MODULE.PRODUCT.PUBLISH_PRODUCT, param, (ret, err) => {
                if (ret && ret.code === RESPONSE_OK) {
                    callback(ret, err)
                } else {
                    toastBottom(ret ? ret.msg : '');
                }
            });
        },
        //发布异型钢
        publishDeformed(param, callback) {
            fnPost(interfaces.PRODUCT_MODULE.DEFORMED.PUBLISH_DEFORMED, param, (ret, err) => {
                if (ret && ret.code === RESPONSE_OK) {
                    callback(ret, err)
                } else {
                    toastBottom(ret ? ret.msg : '');
                }
            });
        },
        /**
         * 发布视频展示
         * @param param
         * @param callback
         */
        publishVideoShow(param, callback) {
            fnPostLoading(interfaces.PRODUCT_MODULE.PUBLISH_VIDEO_SHOW, param, true, (ret, err) => {
                if (ret && ret.code === RESPONSE_OK) {
                    callback(ret, err)
                } else {
                    toastBottom(ret ? ret.msg : '');
                }
            });
        },
        /**
         * 更新视频
         * @param param
         * @param callback
         */
        updateVideoShow(param, callback) {
            if (!param.id) {
                toastBottom("参数错误！")
                return false
            }
            fnPut(interfaces.PRODUCT_MODULE.UPDATE_VIDEO_SHOW, param, true, (ret, err) => {
                if (ret && ret.code === RESPONSE_OK) {
                    callback(ret, err)
                } else {
                    toastBottom(ret ? ret.msg : '');
                }
            });
        },
        /**
         * 视频上下架
         * @param param
         * @param callback
         */
        updateStatusVideoShow(param, callback) {
            if (!param.id) {
                toastBottom("参数错误！")
                return false
            }
            fnPut(interfaces.PRODUCT_MODULE.UPDATE_STATUS_VIDEO_SHOW, param, false, (ret, err) => {
                if (ret && ret.code === RESPONSE_OK) {
                    callback(ret, err)
                } else {
                    toastBottom(ret ? ret.msg : '');
                }
            });
        },
        /**
         * 发布维修保养
         * @param param
         * @param callback
         */
        publishMaintenance(param, callback) {
            fnPost(interfaces.PRODUCT_MODULE.PUBLISH_MAINTENANCE, param, (ret, err) => {
                if (ret && ret.code === RESPONSE_OK) {
                    callback(ret, err)
                } else {
                    toastBottom(ret ? ret.msg : '');
                }
            });
        },
        publishStorage(param, callback) {
            fnPost(interfaces.PRODUCT_MODULE.STORAGE.PUBLISH_STORAGE, param, (ret, err) => {
                if (ret && ret.code === RESPONSE_OK) {
                    callback(ret, err)
                } else {
                    toastBottom(ret ? ret.msg : '');
                }
            });
        },
        /**
         * 发布仓储
         * @param param
         * @param callback
         */
        getStorageDetail(storageId, callback) {
            fnGet(interfaces.PRODUCT_MODULE.STORAGE.STORAGE_DETAIL + storageId, {}, false,
                function (ret, err) {
                    if (ret && ret.code === RESPONSE_OK) {
                        callback && callback(ret);
                    } else {
                        toastBottom(ret ? ret.msg : '');
                    }
                }
            );
        },
        /**
         * 更新
         * @param {'商品'} param
         * @param callback
         */
        updateStorage(param, callback) {
            if (!param.id) {
                toastBottom("参数错误！")
                return false
            }
            fnPut(interfaces.PRODUCT_MODULE.STORAGE.UPDATE_STORAGE, param, false, function (ret, err) {
                if (ret && ret.code === RESPONSE_OK) {
                    callback(ret);
                } else {
                    toastBottom(ret ? ret.msg : '');
                }
            });
        },
        /**
         * 更新上下架
         * @param {'商品'} param
         * @param callback
         */
        updateStatusStorage(param, callback) {
            if (!param.id) {
                toastBottom("参数错误！")
                return false
            }
            fnPut(interfaces.PRODUCT_MODULE.STORAGE.UPDATE_STATUS_STORAGE, param, false, function (ret, err) {
                if (ret && ret.code === RESPONSE_OK) {
                    callback(ret);
                } else {
                    toastBottom(ret ? ret.msg : '');
                }
            });
        },
        /**
         * 发布物流(货找车、车找货)
         * @param param
         * @param callback
         */
        publishLogistic(param, callback) {
            fnPost(interfaces.PRODUCT_MODULE.LOGISTIC.PUBLISH_LOGISTIC, param, (ret, err) => {
                if (ret && ret.code === RESPONSE_OK) {
                    callback(ret, err)
                } else {
                    toastBottom(ret ? ret.msg : '');
                }
            });
        },
        /**
         * 更新
         * @param {'商品'} param
         * @param callback
         */
        updateLogistic(param, callback) {
            if (!param.id) {
                toastBottom("参数错误！")
                return false
            }
            fnPut(interfaces.PRODUCT_MODULE.LOGISTIC.UPDATE_LOGISTIC, param, false, function (ret, err) {
                if (ret && ret.code === RESPONSE_OK) {
                    callback(ret);
                } else {
                    toastBottom(ret ? ret.msg : '');
                }
            });
        },
        /**
         * 更新上下架
         * @param {'商品'} param
         * @param callback
         */
        updateStatusLogistic(param, callback) {
            if (!param.id) {
                toastBottom("参数错误！")
                return false
            }
            fnPut(interfaces.PRODUCT_MODULE.LOGISTIC.UPDATE_STATUS_LOGISTIC, param, false, function (ret, err) {
                if (ret && ret.code === RESPONSE_OK) {
                    callback(ret);
                } else {
                    toastBottom(ret ? ret.msg : '');
                }
            });
        },
        /**
         * 发布用工招聘
         * @param param
         * @param callback
         */
        publishRecruit(param, callback) {
            fnPost(interfaces.PRODUCT_MODULE.PUBLISH_RECRUIT, param, (ret, err) => {
                if (ret && ret.code === RESPONSE_OK) {
                    callback(ret, err)
                } else {
                    toastBottom(ret ? ret.msg : '');
                }
            });
        },

        /**
         * 发布求购求租设备
         * @param param
         * @param callback
         */
        publishEquipment(param, callback) {
            fnPost(interfaces.PRODUCT_MODULE.PUBLISH_EQUIPMENT, param, (ret, err) => {
                if (ret && ret.code === RESPONSE_OK) {
                    callback(ret, err)
                } else {
                    toastBottom(ret ? ret.msg : '');
                }
            });
        }
    };
    return objRelease.invoke(name)
}

//***********************************************************************************
// 购物车模块
//***********************************************************************************
function cart(name) {
    var objCart = {
        getCartList(params, callback) {
            fnGet(interfaces.USER_MODULE.CART.GET_CARTLIST, {}, true,
                function (ret, err) {
                    if (ret && ret.code === RESPONSE_OK) {
                        callback && callback(ret);
                    } else {
                        toastBottom(ret ? ret.msg : '');
                    }
                    api.refreshHeaderLoadDone()
                }
            )
        },
        /**
         * 删除购物车商品
         * @author 陆铭一
         * @param {*} param
         * @param {*} callback
         */
        delCartsItem(param, callback) {
            fnPut(interfaces.USER_MODULE.CART.DEL_CART, param, true, function (ret, err) {
                if (ret && ret.code === RESPONSE_OK) {
                    callback(ret)
                } else {
                    toastBottom(ret ? ret.msg : '');
                }
            });
        },
        /**
         * 改变购物车商品数
         * @author 陆铭一
         * @param {*} param
         * @param {*} callback
         */
        updateCartsNum(param, callback) {
            fnPut(interfaces.USER_MODULE.CART.PUT_CARTLIST, {
                "productId": param.productId,
                "quantity": param.quantity
            }, false, function (ret, err) {
                if (ret && ret.code === RESPONSE_OK) {
                    callback(ret)
                } else {
                    toastBottom(ret ? ret.msg : '');
                }
            });
        },
        /**
         * 添加购物车
         * @author 陆铭一
         * @param {*} params
         * @param {*} callback
         */
        addCart(params, callback) {
            fnPost(interfaces.USER_MODULE.CART.ADD_CART, params, function (ret, err) {
                if (ret && ret.code === RESPONSE_OK) {
                    callback && callback(ret)
                } else {
                    console.log(JSON.stringify(ret))
                    toastBottom(ret ? ret.msg : '');
                }
            });
        },
        invoke(name) {
            if (objCart[name]) return objCart[name];
            else throw new Error("不存在当前方法")
        },
    }

    return objCart.invoke(name);
}

//***********************************************************************************
// 我的模块
//***********************************************************************************
function mime(name) {
    const objMime = {
        invoke(name) {
            if (objMime[name]) return objMime[name];
            else throw new Error("不存在" + name + "方法")
        },
        /**
         * 提交意见反馈
         * @param {"反馈内容"} content
         * @param callback
         */
        addFeedback(content, callback) {
            const param = { content: content }
            fnPost(interfaces.USER_MODULE.ADD_FEEDBACK, param, function (ret, err) {
                if (ret && ret.code === RESPONSE_OK) {
                    callback(ret, err)
                } else {
                    toastBottom(ret ? ret.msg : '');
                }
            });
        },
        /**
         * 获取店铺信息
         * @param callback
         */
        getUserShopInfo(callback) {
            fnGet(interfaces.USER_MODULE.SHOP.GET_USERSHOPINFO, {}, false, function (ret, err) {
                if (ret && ret.code === RESPONSE_OK) {
                    callback(ret);
                } else
                    toastBottom(ret ? ret.msg : '');
            });
        },
        /**
         * @author 郭赞
         * @info 添加常见问题
         */
        addQuestion(params, callback) {
            fnPost(interfaces.CONTENT_MODULE.INFO.ADD_QUESTION, params, function (ret, err) {
                if (ret && ret.code === RESPONSE_OK) {
                    callback && callback(ret)
                } else {
                    toastBottom(ret ? ret.msg : '');
                }
            });
        },
        /**
         * @author 郭赞
         * @info 获取常见问题列表
         */
        getQuestionList(callback) {

            fnGet(interfaces.CONTENT_MODULE.INFO.GET_QUESTIONLIST, {}, false, function (ret, err) {
                if (ret && ret.code === RESPONSE_OK) {
                    callback && callback(ret);
                } else
                    toastBottom(ret ? ret.msg : '');
            });
        },
        /**
         * 获取地址列表
         */
        getAddrList(params, callback) {
            fnGet(interfaces.USER_MODULE.ADDR.GET_ADDRLIST, params, false, function (ret, err) {
                if (ret && ret.code === RESPONSE_OK) {
                    callback(ret);
                } else
                    toastBottom(ret ? ret.msg : '');
            });
        },
        /**
         * @author 郭赞
         * @info 获取静态页面列表
         */
        getStaticList(callback) {
            fnGet(interfaces.CONTENT_MODULE.INFO.GET_STATICLIST, {}, true, function (ret, err) {
                if (ret && ret.code === RESPONSE_OK) {
                    callback && callback(ret);
                } else
                    toastBottom(ret ? ret.msg : '');
            });
        },
        setDefaultAddr(params, callback) {
            fnPut(interfaces.USER_MODULE.ADDR.SET_DEFAULTADDR + "/" + params.id, {}, false, function (ret, err) {
                if (ret && ret.code === RESPONSE_OK) {
                    callback && callback(ret, err)
                } else {
                    toastBottom(ret ? ret.msg : '');
                }
            });
        },
        addAddr(params, callback) {
            fnPost(interfaces.USER_MODULE.ADDR.ADD_ADDR, params, function (ret, err) {
                if (ret && ret.code === RESPONSE_OK) {
                    callback && callback(ret)
                } else {
                    toastBottom(ret ? ret.msg : '');
                }
            });
        },
        editAddr(params, callback) {
            fnPut(interfaces.USER_MODULE.ADDR.EDIT_ADDR, params, false, function (ret, err) {
                if (ret && ret.code === RESPONSE_OK) {
                    callback && callback(ret, err)
                } else {
                    toastBottom(ret ? ret.msg : '');
                }
            });
        },
        deleteAddr(params, callback) {
            fnDelete(interfaces.USER_MODULE.ADDR.DELETE_ADDR + "/" +
                params.id, {}, false,
                function (ret, err) {
                    if (ret && ret.code === RESPONSE_OK) {
                        callback(ret, err);
                    } else {
                        toastBottom(ret ? ret.msg : '');
                    }
                })
        },


        /**
         * 地址改版-最新2021.6.15
         */
        getAddressList(params, callback) {
            fnGet(interfaces.USER_MODULE.ADDRESS.GET_ADDRLIST, params, false, function (ret, err) {
                console.log("地址" + interfaces.USER_MODULE.ADDRESS.GET_ADDRLIST)

                if (ret && ret.code === RESPONSE_OK) {
                    callback(ret);
                } else
                    toastBottom(ret ? ret.msg : '');
            });
        },
        setDefaultAddress(params, callback) {
            fnPut(interfaces.USER_MODULE.ADDRESS.SET_DEFAULTADDR + "/" + params.id, {}, false, function (ret, err) {
                if (ret && ret.code === RESPONSE_OK) {
                    callback && callback(ret, err)
                } else {
                    toastBottom(ret ? ret.msg : '');
                }
            });
        },
        addAddress(params, callback) {
            fnPost(interfaces.USER_MODULE.ADDRESS.ADD_ADDR, params, function (ret, err) {
                if (ret && ret.code === RESPONSE_OK) {
                    callback && callback(ret)
                } else {
                    toastBottom(ret ? ret.msg : '');
                }
            });
        },
        editAddress(params, callback) {
            fnPut(interfaces.USER_MODULE.ADDRESS.EDIT_ADDR, params, false, function (ret, err) {
                if (ret && ret.code === RESPONSE_OK) {
                    callback && callback(ret, err)
                } else {
                    toastBottom(ret ? ret.msg : '');
                }
            });
        },
        deleteAddress(params, callback) {
            fnDelete(interfaces.USER_MODULE.ADDRESS.DELETE_ADDR + "/" +
                params.id, {}, false,
                function (ret, err) {
                    if (ret && ret.code === RESPONSE_OK) {
                        callback(ret, err);
                    } else {
                        toastBottom(ret ? ret.msg : '');
                    }
                })
        },
        /**
         * 获取金额记录
         * 提现中 WAIT, 拒绝 REFUSE, 同意 APPROVE, 全部 OTHER;
         * @author 陆铭一
         * @param callback
         */
        getBalance(param, callback) {
            fnGet(interfaces.ORDER_MODULE.WITHDRAW.GET_BALANCE, param, true, function (ret, err) {
                if (ret && ret.code === RESPONSE_OK) {
                    callback(ret);
                } else
                    toastBottom(ret ? ret.msg : '');
            });
        },
        /**
         * 获取店铺金额
         * @param callback
         */
        getUserShopBalance(callback) {
            fnGet(interfaces.ORDER_MODULE.WITHDRAW.GET_WITHDRAWMONEY, {}, false, function (ret, err) {
                if (ret && ret.code === RESPONSE_OK) {
                    callback(ret);
                } else
                    toastBottom(ret ? ret.msg : '');
            });
        },
        /**
         * 我的邀请码
         * @param 
         * @param callback
         */
        getInviteCode(callback) {
            fnGet(interfaces.USER_MODULE.GET_USER_CODE, {}, false, function (ret, err) {
                if (ret && ret.code === RESPONSE_OK) {
                    callback(ret);
                } else
                    toastBottom(ret ? ret.msg : '');
            });
        },
        /**
        * 我的邀请客户列表
        * @param 
        * @param callback
        */
        getInviteList(param, callback) {
            fnGet(interfaces.USER_MODULE.GET_USER_INVITE_LIST, param, false, function (ret, err) {
                if (ret && ret.code === RESPONSE_OK) {
                    callback(ret);
                } else
                    toastBottom(ret ? ret.msg : '');
            });
        },
        /**
         * 我的邀请客户统计
         * @param 
         * @param callback
         */
        getInviteTotal(callback) {
            fnGet(interfaces.USER_MODULE.INVITE_TAOTAL_DATA, {}, false, function (ret, err) {
                if (ret && ret.code === RESPONSE_OK) {
                    callback(ret);
                } else
                    toastBottom(ret ? ret.msg : '');
            });
        },

        /**
         * 查看有多少人拿到佣金
         * @param 
         * @param callback
         */
        getInviteTotalCount(callback) {
            fnGet(interfaces.USER_MODULE.INVITE_TAOTAL_COUNT, {}, false, function (ret, err) {
                if (ret && ret.code === RESPONSE_OK) {
                    callback(ret);
                } else
                    toastBottom(ret ? ret.msg : '');
            });
        },

        /**
         * 获取认证状态
         * @param callback
         */
        getAuthorizationStatus(callback) {
            fnGet(interfaces.USER_MODULE.AUTHORIZATION.AUTHORIZATION_STATUS, {}, false, function (ret, err) {
                if (ret && ret.code === RESPONSE_OK) {
                    callback(ret);
                }
            });
        },
        /**
         * 获取认证信息
         * @param {"PERSONAL或者MERCHANT"}type
         * @param callback
         */
        getAuthorizationDetail(type, callback) {
            fnGet(interfaces.USER_MODULE.AUTHORIZATION.AUTHORIZATION_DETAIL, { certificationType: type }, false, function (ret, err) {
                if (ret && ret.code === RESPONSE_OK) {
                    callback(ret);
                } else
                    toastBottom(ret ? ret.msg : '');
            });
        },
        /**
         * 修改用户手机信息
         * @param {"新手机号验证码"} newCode
         * @param {"新手机号"} newPhone
         * @param {"原始手机号验证码"} originalCode
         * @param callback
         */
        updateUserPhone(newPhone, newCode, originalCode, callback) {
            const param = { newCode: newCode, newPhone: newPhone, originalCode: originalCode }
            fnPut(interfaces.USER_MODULE.UPDATE_USER_PHONE, param, false, function (ret, err) {
                if (ret && ret.code === RESPONSE_OK) {
                    callback(ret, err)
                } else {
                    toastBottom(ret ? ret.msg : '');
                }
            });
        },
        /**
         * 扫描二维码，进行用户绑定二维码值-app
         * @param {'扫描到的二维码信息'} qrCode
         * @param callback
         * @returns {boolean}
         */
        scanQrCode: function (qrCode, callback) {
            if (!qrCode) {
                toastBottom("参数错误")
                return false
            }
            const param = { "scanToken": qrCode, "timestamp": new Date().getTime() }
            fnPost(interfaces.USER_MODULE.LOGIN.SCAN_QR_CODE, param, function (ret) {
                if (ret && ret.code === RESPONSE_OK) {
                    callback(ret)
                } else {
                    toastBottom(ret ? ret.msg : '');
                }
            });
        },
        /**
         * 确认登陆-app
         * @param qrCode
         * @param callback
         * @returns {boolean}
         */
        scanConfirmLogin: function (qrCode, callback) {
            if (!qrCode) {
                toastBottom("参数错误")
                return false
            }
            const param = { "scanToken": qrCode, "timestamp": new Date().getTime() }
            fnPost(interfaces.USER_MODULE.LOGIN.SCAN_CONFIRM_LOGIN, param, function (ret) {
                if (ret && ret.code === RESPONSE_OK) {
                    callback(ret)
                } else {
                    toastBottom(ret ? ret.msg : '');
                }
            });
        },

        /**
         * 获取用户钱包汇总
         * @param 
         * @param callback
         */
        getUserWalletInfo(callback) {
            fnGet(interfaces.USER_MODULE.GET_USER_WALLET_INFO, {}, false, function (ret, err) {
                if (ret && ret.code === RESPONSE_OK) {
                    callback(ret);
                } else
                    toastBottom(ret ? ret.msg : '');
            });
        },

        /**
         * 获取用户钱包明细列表
         * @param 
         * @param callback
         */
        getUserWalletLog(callback) {
            fnGet(interfaces.USER_MODULE.GET_USER_WALLET_LOG, {}, false, function (ret, err) {
                if (ret && ret.code === RESPONSE_OK) {
                    callback(ret);
                } else
                    toastBottom(ret ? ret.msg : '');
            });
        },

        /**
         * 提现
         * @param 
         * @param callback
         * @returns 
         */
        walletWithdral: function (callback) {
            fnPost(interfaces.USER_MODULE.WALLET_WITHDRAWAL, {}, function (ret) {
                if (ret && ret.code === RESPONSE_OK) {
                    callback(ret)
                } else {
                    toastBottom(ret ? ret.msg : '');
                }
            });
        },
        // 提交调查问卷
        submitQuestionnaire: function (username, question1, question2, question3, callback) {
            const param = { username: username, question1: question1, question2: question2, question3: question3 }
            fnPost(interfaces.USER_MODULE.SUBMIT_QUESTIONNAIRE, param, function (ret) {
                if (ret && ret.code === RESPONSE_OK) {
                    callback(ret)
                } else {
                    toastBottom(ret ? ret.msg : '');
                }
            });
        },
    };
    return objMime.invoke(name)
}


//***********************************************************************************
// 公共模块
// 公共模块是指五个模块中可能存在两个或者两个模块以上都使用到的
// <p>
// 请注意
// 此模块的所有函数注明用意，返回参数和参数意义 注明 作者
//***********************************************************************************
function common(name) {
    const CODE_TYPE = ["LOGIN", "REGISTER", "UPDATE", "UPDATE_OLD_PHONE", "UPDATE_NEW_PHONE", "BIND_PHONE"];
    const objCommon = {
        /**
         * 根据用户id获取店铺信息
         * @author 陆铭一
         * @param callback
         */
        onKeyLogin(param, callback) {
            fnBodyPost(interfaces.USER_MODULE.LOGIN.ONE_KEY_LOGIN, param, function (ret, err) {
                if (ret && ret.code === RESPONSE_OK) {
                    callback(ret);
                } else {
                    toastBottom(ret ? ret.msg : '');
                }
            });
        },
        /**
         * 根据用户id获取店铺信息
         * @author 陆铭一
         * @param callback
         */
        getBanner(param, callback) {
            fnGet(interfaces.PRODUCT_MODULE.BANNER.GET_BANNER, param, false, function (ret, err) {
                if (ret && ret.code === RESPONSE_OK) {
                    callback(ret);
                } else {
                    toastBottom(ret ? ret.msg : '');
                }
            });
        },
        /**
         * @author 郭赞
         * @info 获取消息列表
         */
        getMessageList(params, callback) {
            fnGet(interfaces.USER_MODULE.MESSAGE.GET_MESSAGELIST, params, true,
                function (ret, err) {
                    if (ret && ret.code === RESPONSE_OK) {
                        callback && callback(ret);
                    } else {
                        toastBottom(ret ? ret.msg : '');
                    }
                }
            );
        },
        getUnReadNum(callback) {
            fnGet(interfaces.USER_MODULE.MESSAGE.GET_UN_READ_NUM, {}, false,
                function (ret, err) {
                    if (ret && ret.code === RESPONSE_OK) {
                        callback && callback(ret);
                    }
                }
            );
        },
        addMessage(params, callback) {

        },
        readMessage(params, callback) {
            fnPut(interfaces.USER_MODULE.MESSAGE.READ_MESSAGE + params.id + "/read", {}, false, (ret, err) => {
                if (ret && ret.code === RESPONSE_OK) {
                    callback && callback(ret)
                } else {
                    toastBottom(ret ? ret.msg : '');
                }
            });
        },
        /**
         * 根据用户id获取店铺信息
         * @author 陆铭一
         * @param callback
         */
        getStoreInfo(param, callback) {
            fnGet(interfaces.USER_MODULE.STORE.GET_STORE_INFO, param, true, function (ret, err) {
                if (ret && ret.code === RESPONSE_OK) {
                    callback(ret);
                } else {
                    toastBottom(ret ? ret.msg : '');
                }
            });
        },
        /**
         * 获取系统配置
         * @author 陆铭一
         * @param callback
         */
        getSystemSet(param, callback, errcallback) {
            fnGet(interfaces.CONTENT_MODULE.SYSTEM.GET_SYSTEM, param, true, function (ret, err) {
                if (ret && ret.code === RESPONSE_OK) {
                    callback(ret);
                } else {
                    errcallback(ret, err)
                    toastBottom(ret ? ret.msg : '');
                }
            });
        },
        report(params, callback) {
            fnPost(interfaces.PRODUCT_MODULE.REPORT_CONTENT, params, function (ret, err) {
                if (ret && ret.code === RESPONSE_OK) {
                    callback && callback(ret)
                } else {
                    toastBottom(ret ? ret.msg : '');
                }
            });
        },

        /**
         * 获取品牌信息
         * @author 董尧
         * @param callback
         */
        getBrands(keyword, callback) {
            let param = { status: 1, keyword: keyword, pageSize: 999 }
            fnGet(interfaces.PRODUCT_MODULE.LIST_BRANDS, param, true, function (ret, err) {
                if (ret && ret.code === RESPONSE_OK) {
                    callback(ret, err);
                } else {
                    toastBottom(ret ? ret.msg : '');
                }
            });
        },
        /**
         * 刷新视频播放地址
         * @author 董尧
         * @param {“视频ID”} videoId
         * @param callback 回调
         */
        refreshVideoAuth(videoId, callback) {
            fnPost(interfaces.CONTENT_MODULE.VOD.REFRESH_VIDEO_AUTH, { videoId: videoId }, function (ret, err) {
                if (ret && ret.code === RESPONSE_OK) {
                    callback(ret);
                }
            });
        },
        /**
         * 获取视频鉴权地址
         * @author 董尧
         * @param {“视频ID”} fileName
         * @param {“类型：PRODUCT LOGISTICS MAINTENANCE STORAGE VIDEO_SHOW BANNER TOPIC”} type
         * @param callback 回调
         */
        getVideoAuth(fileName, type, callback) {
            fnPost(interfaces.CONTENT_MODULE.VOD.GET_VIDEO_AUTH,
                { name: fileName, title: fileName, type: type },
                function (ret, err) {
                    if (ret && ret.code === RESPONSE_OK) {
                        callback(ret);
                    }
                });
        },
        /**
         * 获取视频播放地址
         * @author 董尧
         * @param {“视频ID”} videoId
         * @param callback 回调
         */
        getVideoPlay(videoId, callback) {
            fnGet(interfaces.CONTENT_MODULE.VOD.GET_VIDEO_PLAY, { videoId: videoId }, false, function (ret, err) {
                if (ret && ret.code === RESPONSE_OK) {
                    callback(ret);
                }
            });
        },
        /**
         * 获取视频信息
         * @author 董尧
         * @param {“视频ID”} videoId
         * @param callback 回调
         */
        getVideoInfo(videoId, callback) {
            fnGet(interfaces.CONTENT_MODULE.VOD.GET_VIDEO_INFO, { videoId: videoId }, false, function (ret, err) {
                if (ret && ret.code === RESPONSE_OK) {
                    callback(ret);
                } else
                    toastBottom(ret ? ret.msg : '');
            });
        },
        /**
         * 添加浏览
         * @author 董尧
         * @param param  参数
         * @param callback 回调
         */
        addBrowse(param, callback) {
            fnPostLoading(interfaces.PRODUCT_MODULE.BROWSE.ADD_BROWSE, param, false, function (ret, err) {
                if (ret && ret.code === RESPONSE_OK) {
                    callback(ret)
                }
            });
        },
        /**
         * 添加收藏
         * @author 董尧
         * @param param  参数
         * @param callback 回调
         */
        addCollect(param, callback) {
            if (!checkToken()) return false;
            fnPostLoading(interfaces.PRODUCT_MODULE.COLLECTION.ADD_COLLECT, param, false, function (ret, err) {
                if (ret && ret.code === RESPONSE_OK) {
                    callback(ret)
                } else {
                    toastBottom(ret ? ret.msg : '');
                }
            });
        },
        /**
         * 检查是否收藏，传入对应列表的ID，返回收藏的ID
         * @author 董尧
         * @param param  参数
         * @param callback 回调
         */
        checkHasCollect(param, callback) {
            fnPostLoading(interfaces.PRODUCT_MODULE.COLLECTION.CHECK_HAS_COLLECT, param, false, function (ret, err) {
                if (ret && ret.code === RESPONSE_OK) {
                    callback(ret)
                }
            });
        },
        /**
         * 取消收藏
         * @author 董尧
         * @param param  参数
         * @param callback 回调
         */
        cancelCollect(param, callback) {
            if (!checkToken()) return false;
            fnPut(interfaces.PRODUCT_MODULE.COLLECTION.CANCEL_COLLECT, param, false, (ret, err) => {
                if (ret && ret.code === RESPONSE_OK) {
                    callback(ret)
                } else {
                    toastBottom(ret ? ret.msg : '');
                }
            });
        },
        /**
         * 发送验证码
         * @param {'验证码类型,可用值:注册LOGIN,
         * 登陆REGISTER,通用更新UPDATE,
         * 更新旧手机号UPDATE_OLD_PHONE,
         * 更新新手机号UPDATE_NEW_PHONE'} codeType
         * @param {'手机号'} phone
         * @param {'绑定类型，绑定手机传'} bindType
         * @param callback
         */
        smsSendCode(codeType, phone, bindType, callback) {
            if (CODE_TYPE.indexOf(codeType) < 0) {
                toastBottom("参数错误");
                return false
            }
            const param = { codeType: codeType, phone: phone, platformType: "APP" }
            if (bindType) {
                param.bindType = bindType
            }
            fnPost(interfaces.CONTENT_MODULE.SMS.SEND_CODE, param, (ret, err) => {
                if (ret && ret.code === RESPONSE_OK) {
                    callback(ret, err)
                } else {
                    toastMiddle(ret ? ret.msg : '');
                }
            });
        },
        /**
         * 发送验证码
         *
         * @param {'验证码类型,可用值:
         * 注册LOGIN,
         * 登陆REGISTER,通用更新UPDATE,
         * 更新旧手机号UPDATE_OLD_PHONE,
         * 更新新手机号UPDATE_NEW_PHONE'} codeType
         * @param {'手机号'} phone
         * @param {'验证码'} code
         * @param callback
         */
        smsCheckCode(codeType, phone, code, callback) {
            if (CODE_TYPE.indexOf(codeType) < 0) {
                toastBottom("参数错误");
                return false
            }
            const param = { codeType: codeType, phone: phone, platformType: "APP", code: code }
            fnPost(interfaces.CONTENT_MODULE.SMS.CHECK_CODE, param, (ret, err) => {
                if (ret && ret.code === RESPONSE_OK) {
                    callback(ret, err)
                } else {
                    toastBottom(ret ? ret.msg : '');
                }
            });
        },
        /**
         * 验证码登陆
         * @author 陆铭一
         * @param param 登陆参数
         * @param callback
         */
        codeLogin: function (param, callback) {
            fnPost(interfaces.USER_MODULE.LOGIN.CODE_LOGIN, param, (ret) => {
                if (ret && ret.code === RESPONSE_OK) {
                    callback(ret)
                } else {
                    toastBottom(ret ? ret.msg : '');
                }
            });
        },
        /**
         * 三方登陆登陆
         * @author 陆铭一
         * @param param 登陆参数
         * @param callback
         */
        thirdLogin: function (param, callback) {
            fnPost(interfaces.USER_MODULE.LOGIN.THIRD_LOGIN, param, (ret) => {
                if (ret && ret.code === RESPONSE_OK) {
                    callback(ret)
                } else {
                    toastBottom(ret ? ret.msg : '');
                }
            });
        },
        /**
         * 绑定手机
         * @param param
         * @param callback
         */
        bindPhone: function (param, callback) {
            fnPost(interfaces.USER_MODULE.USER.BIND_PHONE, param, (ret) => {
                if (ret && ret.code === RESPONSE_OK) {
                    callback(ret)
                } else {
                    toastBottom(ret ? ret.msg : '');
                }
            });
        },
        logout: function (callback) {
            fnPost(interfaces.USER_MODULE.LOGIN.LOGOUT, {}, (ret) => {
                if (ret && ret.code === RESPONSE_OK) {
                    callback(ret)
                } else {
                    toastBottom(ret ? ret.msg : '');
                }
            });
        },
        /**
         *
         * @param {'关键字'} keyword
         * @param callback
         */
        getLocation(keyword, callback) {
            fnPost(interfaces.CONTENT_MODULE.GET_LOCATION, { keyword: keyword }, (ret, err) => {
                if (ret && ret.code === RESPONSE_OK) {
                    callback(ret, err)
                } else {
                    toastBottom(ret ? ret.msg : '');
                }
            });
        },
        /**
         * 获取各模块数量
         * @param param
         * @param callback
         */
        getModuleCount: function (param, callback) {
            fnGet(interfaces.PRODUCT_MODULE.SEARCH.SEARCH_MODULECOUNT, param, false, function (ret, err) {
                if (ret && ret.code === RESPONSE_OK) {
                    callback(ret)
                } else {
                    toastBottom(ret ? ret.msg : '');
                }
            });
        },

        getShopKfUrl: function (userId, callback) {
            fnGet(interfaces.USER_MODULE.SHOP.KF_URL, { userId: userId }, false, function (ret, err) {
                if (ret && ret.code === RESPONSE_OK) {
                    callback(ret)
                } else {
                    toastBottom(ret ? ret.msg : '');
                }
            });
        },
        invoke(name) {
            if (objCommon[name]) return objCommon[name];
            else throw new Error("不存在名称为" + name + "方法")
        }
    };
    return objCommon.invoke(name)
}

//***********************************************************************************
// 订单模块
//
function order(name) {
    const objOrder = {
        /**
         * 支付订单
         * @author 陆铭一
         * @param callback
         */
        payOrders(param, callback) {
            fnBodyPost(interfaces.ORDER_MODULE.ORDER.PAY_ORDERS, param, function (ret, err) {
                console.log("订单支付：" + JSON.stringify(ret))
                if (ret && ret.code === RESPONSE_OK) {
                    callback(ret)
                } else {
                    toastBottom(ret ? ret.msg : '');
                }
            });
        },
        /**
         * 检查订单状态
         * @author 陆铭一
         * @param callback
         */
        checkOrderStatus(sn, callback) {
            fnGet(interfaces.ORDER_MODULE.ORDER.CHECK_STATUS + sn, {}, false, function (ret, err) {
                if (ret && ret.code === RESPONSE_OK) {
                    callback(ret)
                } else {
                    toastBottom(ret ? ret.msg : '');
                }
            });
        },
        /**
         * 创建用户订单
         * @author 陆铭一
         * @param callback
         */
        createOrder(param, callback) {
            fnPostLoading(interfaces.ORDER_MODULE.ORDER.CREATE_USER_ORDERS, param, false, function (ret, err) {
                if (ret && ret.code === RESPONSE_OK) {
                    callback(ret)
                } else {
                    toastBottom(ret ? ret.msg : '');
                }
            });
        },
        /**
         * 构建用户订单
         * @author 陆铭一
         * @param callback
         */
        buildOrder(param, callback) {
            fnBodyPost(interfaces.ORDER_MODULE.ORDER.BUILD_USER_ORDERS, param, function (ret, err) {
                if (ret && ret.code === RESPONSE_OK) {
                    callback(ret)
                } else {
                    toastBottom(ret ? ret.msg : '');
                }
            });
        },
        /**
         * 查看物流 /logistics
         * @author 陆铭一
         * @param callback SEE_LOGISTICS
         */
        seeLogistics(param, callback) {
            fnGet(interfaces.ORDER_MODULE.ORDER.USER_ORDER + param.id + '/logistics', param, true, function (ret, err) {
                if (ret && ret.code === RESPONSE_OK) {
                    callback(ret)
                } else {
                    toastBottom(ret ? ret.msg : '');
                }
            });
        },
        /**
         * 取消订单 /cancel 申请退款 /apply_refund 申请退货 /apply_return 取消换货 /cancel_change
         * 取消退款 /cancel_refund 取消退货 /cancel_return  确认收货 /receipt 申请换货 /apply_change
         * @author 陆铭一
         * @param callback
         */
        doOrderBtn(param, callback) {
            fnBodyPost(interfaces.ORDER_MODULE.ORDER.SEE_LOGISTICS + param.id + param.url, {}, function (ret, err) {
                if (ret && ret.code === RESPONSE_OK) {
                    callback(ret)
                } else {
                    toastBottom(ret ? ret.msg : '');
                }
            });
        },
        cancelOrder(id, callback) {
            fnBodyPost(interfaces.ORDER_MODULE.ORDER.USER_ORDER + id + '/cancel', {}, function (ret, err) {
                if (ret && ret.code === RESPONSE_OK) {
                    callback(ret)
                } else {
                    toastBottom(ret ? ret.msg : '');
                }
            });
        },
        receiptOrder(id, callback) {
            fnBodyPost(interfaces.ORDER_MODULE.ORDER.USER_ORDER + id + '/receipt', {}, function (ret, err) {
                if (ret && ret.code === RESPONSE_OK) {
                    callback(ret)
                } else {
                    toastBottom(ret ? ret.msg : '');
                }
            });
        },
        applyRefund(id, callback) {
            fnBodyPost(interfaces.ORDER_MODULE.ORDER.USER_ORDER + id + '/apply_refund', {}, function (ret, err) {
                if (ret && ret.code === RESPONSE_OK) {
                    callback(ret)
                } else {
                    toastBottom(ret ? ret.msg : '');
                }
            });
        },
        applyReturn(id, callback) {
            fnBodyPost(interfaces.ORDER_MODULE.ORDER.USER_ORDER + id + '/apply_return', {}, function (ret, err) {
                if (ret && ret.code === RESPONSE_OK) {
                    callback(ret)
                } else {
                    toastBottom(ret ? ret.msg : '');
                }
            });
        },
        applyChange(id, callback) {
            fnBodyPost(interfaces.ORDER_MODULE.ORDER.USER_ORDER + id + '/apply_change', {}, function (ret, err) {
                if (ret && ret.code === RESPONSE_OK) {
                    callback(ret)
                } else {
                    toastBottom(ret ? ret.msg : '');
                }
            });
        },
        cancelRefund(id, callback) {
            fnBodyPost(interfaces.ORDER_MODULE.ORDER.USER_ORDER + id + '/cancel_refund', {}, function (ret, err) {
                if (ret && ret.code === RESPONSE_OK) {
                    callback(ret)
                } else {
                    toastBottom(ret ? ret.msg : '');
                }
            });
        },
        cancelReturn(id, callback) {
            fnBodyPost(interfaces.ORDER_MODULE.ORDER.USER_ORDER + id + '/cancel_return', {}, function (ret, err) {
                if (ret && ret.code === RESPONSE_OK) {
                    callback(ret)
                } else {
                    toastBottom(ret ? ret.msg : '');
                }
            });
        },
        cancelChange(id, callback) {
            fnBodyPost(interfaces.ORDER_MODULE.ORDER.USER_ORDER + id + '/cancel_change', {}, function (ret, err) {
                if (ret && ret.code === RESPONSE_OK) {
                    callback(ret)
                } else {
                    toastBottom(ret ? ret.msg : '');
                }
            });
        },
        /**
         * 删除用户的订单
         * @author 陆铭一
         * @param callback
         */
        deleteUserOrder(id, callback) {
            fnDelete(interfaces.ORDER_MODULE.ORDER.GET_USER_ORDERS + '/' + id, {}, true, function (ret, err) {
                console.log("删除订单：" + JSON.stringify(ret))
                if (ret && ret.code === RESPONSE_OK) {
                    callback(ret)
                } else {
                    toastBottom(ret ? ret.msg : '');
                }
            });
        },
        setReturnLogistics(param, callback) {
            fnBodyPost(interfaces.ORDER_MODULE.ORDER.RETURN_LOGISTICS, param, function (ret, err) {
                if (ret && ret.code === RESPONSE_OK) {
                    callback(ret)
                } else {
                    toastBottom(ret ? ret.msg : '');
                }
            });
        },
        /**
         * 获取用户的订单详情
         * @author 陆铭一
         * @param callback
         */
        getUserOrderDetail(id, callback) {
            fnGet(interfaces.ORDER_MODULE.ORDER.GET_USER_ORDERS + '/' + id, {}, true, function (ret, err) {
                if (ret && ret.code === RESPONSE_OK) {
                    callback(ret)
                } else {
                    toastBottom(ret ? ret.msg : '');
                }
            });
        },
        getShopOrderDetail(id, callback) {
            fnGet(interfaces.ORDER_MODULE.ORDER.GET_SHOP_ORDERS + '/' + id, {}, true, function (ret, err) {
                if (ret && ret.code === RESPONSE_OK) {
                    callback(ret)
                } else {
                    toastBottom(ret ? ret.msg : '');
                }
            });
        },
        /**
         * 获取用户的订单列表
         * @author 陆铭一
         * @param callback
         */
        getListUserOrders(param, callback) {
            fnGet(interfaces.ORDER_MODULE.ORDER.GET_USER_ORDERS, param, true, function (ret, err) {
                if (ret && ret.code === RESPONSE_OK) {
                    callback(ret)
                } else {
                    toastBottom(ret ? ret.msg : '');
                }
            });
        },
        // 获取优惠码列表
        getListUserDiscounts(param, callback) {
            fnGet(interfaces.ORDER_MODULE.ORDER.GET_DISCOUNTS_LIST, param, true, function (ret, err) {
                if (ret && ret.code === RESPONSE_OK) {
                    callback(ret)
                } else {
                    toastBottom(ret ? ret.msg : '');
                }
            });
        },
        /**
         * 店铺获取出售的订单列表
         * @author 陆铭一
         * @param callback
         */
        getListSellOrder(param, callback) {
            fnGet(interfaces.ORDER_MODULE.ORDER.GET_SELL, param, true, function (ret, err) {
                if (ret && ret.code === RESPONSE_OK) {
                    callback(ret)
                } else {
                    toastBottom(ret ? ret.msg : '');
                }
            });
        },
        getExpressCompanies(param, callback) {
            fnGet(interfaces.ORDER_MODULE.ORDER.GET_EXPRESS, param, false, function (ret, err) {
                if (ret && ret.code === RESPONSE_OK) {
                    callback(ret)
                } else {
                    toastBottom(ret ? ret.msg : '');
                }
            });
        },
        invoke(name) {
            if (objOrder[name]) return objOrder[name];
            else throw new Error("不存在名称为" + name + "方法")
        }
    };
    return objOrder.invoke(name)
}
